home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / wanderer / m.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-10-26  |  3.3 KB  |  166 lines

  1. #include "wand_head.h"
  2.  
  3. extern char *playscreen();
  4.  
  5. extern int rscreen();
  6.  
  7. extern int savescore();
  8.  
  9. int debug_disp = 0;
  10. int no_passwords = 0;
  11. int maxscreens;
  12. char screen[NOOFROWS][ROWLEN+1];
  13. int edit_mode = 0;
  14. int saved_game = 0;
  15.  
  16. main(argc,argv)
  17. int  argc;
  18. char *argv[];
  19. {
  20. char (*frow)[ROWLEN+1] = screen;
  21. int num = 1,score = 0,bell = 0,maxmoves = 0,fp,x,y;
  22. char howdead[25],buffer[100],
  23.      *name,*keys,*dead,ch;
  24. char *malloc();
  25.  
  26. if(argc == 2)
  27.     {
  28.     if(!strcmp(argv[1], "-e"))
  29.     {
  30.     edit_mode = 1;
  31.     }
  32.     else if(!strcmp(argv[1], "-m"))
  33.     {
  34.     erase_scores();
  35.     return 0;
  36.     }
  37.     else if(!strcmp(argv[1], "-c"))
  38.     {
  39.     /* show credits */
  40.     sprintf(buffer,"%s/credits",SCREENPATH);
  41.     if((fp = open(buffer,O_RDONLY)) == -1) {
  42.             printf(" Sorry - credits unavailable!\n");
  43.         exit(1);
  44.         }
  45.     while(read(fp,&ch,1) == 1)
  46.         printf("%c",ch);
  47.     printf("\n");
  48.     exit(0);
  49.         }
  50.     else if(!strcmp(argv[1], "-s"))
  51.     {
  52.         savescore("-",0,0,"-");
  53.         return 0;
  54.     }
  55.     else if(!strcmp(argv[1], "-f"))
  56.         {
  57.     debug_disp = 1;
  58.     }
  59.     else
  60.     {
  61.     fprintf(stderr,"Usage: %s [ -e | -m | -c | -s | -f ]\n",argv[0]);
  62.     exit(1);
  63.         }
  64.     }
  65. if(argc > 2)
  66.     {
  67.     fprintf(stderr,"Usage: %s [ -e | -m | -c | -s | -f ]\n",argv[0]);
  68.     exit(1);
  69.     }
  70.  
  71. /* check for passwords - if file no_pws is in screen dir no pws! */
  72. sprintf(buffer,"%s/no_pws",SCREENPATH);
  73. if((fp = open(buffer,O_RDONLY)) != -1) {
  74.     close(fp);
  75.     no_passwords = 1;
  76. }
  77.  
  78. /* count available screens */
  79. for(maxscreens = 0;;maxscreens++) {
  80.     sprintf(buffer,"%s/screen.%d",SCREENPATH,(maxscreens+1));
  81.     if((fp = open(buffer, O_RDONLY)) == -1 )
  82.     break;
  83.     close(fp);
  84. }
  85.  
  86. if((name = (char *)getenv("NEWNAME")) == NULL)
  87.     if((name = (char *)getenv("NAME")) == NULL)
  88.         if((name = (char *)getenv("FULLNAME")) == NULL)
  89.             if((name = (char *)getenv("USER")) == NULL)
  90.         if((name = (char *)getenv("LOGNAME")) == NULL)
  91. #ifdef    ASKNAME    /* M001 */
  92.         {
  93.             name = malloc(80);
  94.             if (name == NULL) {
  95.             printf("malloc error\n");
  96.             exit(1);
  97.             }
  98.             printf("Name? "); fflush(stdout);
  99.             gets(name);
  100.             if (name[0] == '\0')
  101.                 name = "noname";
  102.         }
  103. #else
  104.                 name = "noname";
  105. #endif
  106.  
  107. if((keys = (char *)getenv("NEWKEYS")) == NULL)
  108.     {
  109.     keys = malloc(5);
  110.     strcpy(keys,"kjhl");
  111.     }
  112.  
  113. initscr();
  114.  
  115. /* MAIN PROGRAM HERE */
  116.  
  117. CBON; noecho();
  118.  
  119. if(!edit_mode) {
  120.     for (;;) {
  121.         if (rscreen(num,&maxmoves)) {
  122.         strcpy(howdead,"a non-existant screen");
  123.         break;
  124.         };
  125.         dead = playscreen(&num,&score,&bell,maxmoves,keys);
  126.         if ((dead != NULL) && (*dead == '~')) {
  127.         num = (int)(dead[1]) - 1;
  128.         dead = NULL;
  129.         }
  130.         if (dead != NULL)
  131.         {
  132.         strcpy(howdead,dead);
  133.             break;
  134.             }
  135.         num++;
  136.         };
  137.  
  138.     printf("\n\n%s killed by %s with a score of %d on level %d.\n",name,howdead,score,num);
  139.     }
  140. else
  141.     {
  142.     if(rscreen(num,&maxmoves))
  143.     {
  144.     for(x=0;x<ROWLEN;x++)
  145.         for(y=0;y<NOOFROWS;y++)
  146.         screen[y][x] =  ' ';
  147.     }
  148.     editscreen(num,&score,&bell,maxmoves,keys);
  149.     }
  150. /* END OF MAIN PROGRAM */
  151.  
  152. /* SAVE ROUTINES FOR SCORES */
  153.  
  154. if(!edit_mode)
  155.     {
  156.     if((savescore(howdead,score,num,name) == 0)&&(score != 0))
  157.          printf("\nWARNING: %s error: score not saved!\n\n",argv[0]);
  158.     }
  159.  
  160. echo();
  161. CBOFF;
  162. endwin();
  163. printf("WANDERER (C)1988 S. Shipway\n");
  164. return 0;
  165. }
  166.